Configuration of networking devices is complex. This task is made even more complicated because configuration settings are typically a function of a network environment of a particular networking device. Today, the environment is appraised by a “network administrator” and a configuration is custom-built for that particular device. Unfortunately, any lessons learned from a single particular device are today not easy to apply to other devices that share the network environment; this is a side-effect of many pieces of today's configurations being “copy-and-pasted” from other devices.
Most networking device configurations today are built device-by-device, “full custom”, which is a time-consuming process. Even when that process has been completed, changes to be propagated across many devices require each device's configuration be individually modified.
Today's configuration management often includes “home-grown” scripts that assemble fractions of device configurations in unique combinations for each device according to a device's unique environment, as guided by a static rarely-changing input file describing those device contexts.
Today's solutions have no ability to adapt to the quickly changing environment of each device. There is a need for more efficient ways for configuring devices in a network.